<?php
require_once ("scripts/single_product.php");
require_once ("scripts/hiding_place_engine.php");
require_once ("scripts/database.php");

function getCart() {
	$result = array();
	$row = array();
	if (isset($_SESSION["cart"])) {
		$products = str_replace(':', '', $_SESSION["cart"]);
		$IDs = explode(';', $products);
		$connection = mysqli_connect(DB_HOST, DB_USERNAME, DB_PASS, DB_NAME);
		for ($i = 0; $i < count($IDs) - 1; $i++)
		$result[$i] = getSpecifiedProductFromDatabase($connection, $IDs[$i]);
		mysqli_close($connection);
	}
	return $result;
}

function addToCart($id) {
	if (!isInCart($id) && !isInHidingPlace($id)) {
		if (!isset($_SESSION["cart"]))
			$_SESSION["cart"] = "";
		$connection = mysqli_connect(DB_HOST, DB_USERNAME, DB_PASS, DB_NAME);
		if (!$connection) {
			echo("Połączenie z bazą danych nie powiodło się.
			Spróbuj ponownie później lub skontaktuj się z administratorem serwisu. 
			<br>Przepraszamy za utrudnienia.");
			return false;
		}
		$stmt = mysqli_prepare($connection, "SELECT DATE_FORMAT(czas_rezerwacji, '%H:%i') as czas FROM rezerwacje WHERE id = ?  FOR UPDATE");
		mysqli_stmt_bind_param($stmt, 'd', $id);
		mysqli_stmt_execute($stmt);
		mysqli_stmt_store_result($stmt);
		$count = mysqli_stmt_num_rows($stmt);
		mysqli_stmt_bind_result($stmt, $tempReservTime);
		if ($count > 0) {
			mysqli_stmt_fetch($stmt);
			$tempTimeArray = explode(':', $tempReservTime);
			$reservTime = $tempTimeArray[0] * 60 + $tempTimeArray[1];
			$currTimeArray = getdate();
			$currTime = $currTimeArray["hours"] * 60 + $currTimeArray["minutes"];
			if ($currTime - $reservTime > 15) {
				$stmt = mysqli_prepare($connection, "UPDATE rezerwacje SET czas_rezerwacji = NOW() WHERE id = ?");
				mysqli_stmt_bind_param($stmt, 'd', $id);
				mysqli_stmt_execute($stmt);
				$_SESSION["cart"] .= ":" . $id . ":;";
			} else {
				header("location:scripts/message.php?message=0");
			}
		} else {
			$stmt = mysqli_prepare($connection, "INSERT INTO rezerwacje VALUES(?, NOW())");
			mysqli_bind_param($stmt, 'd', $id);
			mysqli_stmt_execute($stmt);

			$_SESSION["cart"] .= ":" . $id . ":;";
		}
		mysqli_stmt_close($stmt);
		mysqli_close($connection);
	}
}

function removeFromCart($id) {
	$connection = mysqli_connect(DB_HOST, DB_USERNAME, DB_PASS, DB_NAME);
	if (!$connection) {
		echo("Połączenie z bazą danych nie powiodło się.
				Spróbuj ponownie później lub skontaktuj się z administratorem serwisu. 
				<br>Przepraszamy za utrudnienia.");
		exit(1);
	}
	$stmt = mysqli_prepare($connection, "DELETE FROM rezerwacje WHERE id = ?");
	mysqli_stmt_bind_param($stmt, 'd', $id);
	mysqli_stmt_execute($stmt);
	mysqli_stmt_close($stmt);
	mysqli_close($connection);
	$_SESSION["cart"] = str_replace(":" . $id . ":;", "", $_SESSION["cart"]);
}

function removeAllExpired() {
	$connection = mysqli_connect(DB_HOST, DB_USERNAME, DB_PASS, DB_NAME);
	if (!$connection) {
		echo("Połączenie z bazą danych nie powiodło się.
				Spróbuj ponownie później lub skontaktuj się z administratorem serwisu. 
				<br>Przepraszamy za utrudnienia.");
		exit(1);
	}
	$stmt = mysqli_prepare($connection, "SELECT id FROM rezerwacje WHERE TIMEDIFF(NOW(), czas_rezerwacji) > 1500");
	mysqli_stmt_execute($stmt);
	mysqli_stmt_bind_result($stmt, $toDeleteID);
	while (mysqli_stmt_fetch($stmt)) {
		removeFromCart($toDeleteID);
	}
	mysqli_close($connection);
}

function fromCartToHiding($id) {
	if (isInCart($id)) {
		removeFromCart($id);
		addToHidingPlace($id);
	}
}

function isInCart($id) {
	if (isset($_SESSION["cart"])) {
		if (strpos($_SESSION["cart"], ":" . $id . ":") !== false)
			return true;
		else
			return false;
	} else
		return false;
}

function clearCart() {
	$cart = getCart();
	for ($i = 0; $i < count($cart); $i++) {
		removeFromCart($cart[$i][0]);
	}
}

function buy() {
	$cartContent = getCart();
	clearCart();
	$connection = mysqli_connect(DB_HOST, DB_USERNAME, DB_PASS, DB_NAME);
	if (!$connection) {
		echo("Połączenie z bazą danych nie powiodło się.
				Spróbuj ponownie później lub skontaktuj się z administratorem serwisu. 
				<br>Przepraszamy za utrudnienia.");
		exit(1);
	}
	$stmtProd = mysqli_prepare($connection, "DELETE FROM produkty WHERE id = ?");
	mysqli_stmt_bind_param($stmtProd, 'd', $id);
	$stmtHiding = mysqli_prepare($connection, "DELETE FROM przechowalnia WHERE id = ?");
	mysqli_stmt_bind_param($stmtHiding, 'd', $id);
	for ($i = 0; $i < count($cartContent); $i++) {
		$id = $cartContent[$i][0];
		mysqli_stmt_execute($stmtHiding);
		mysqli_stmt_execute($stmtProd);
	}
	mysqli_stmt_close($stmtProd);
	mysqli_stmt_close($stmtHiding);
	mysqli_close($connection);

	header("location:scripts/message.php?message=1");
}

function countCartPrice() {
	$price = 0;
	$cartContent = getCart();
	for ($i = 0; $i < count($cartContent); $i++) {
		$price += $cartContent[$i][4];
	}
	return $price;
}
?>